실시간 컴퓨팅
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
실시간 컴퓨팅은 실제 세계의 변화에 맞춰 작업을 처리하는 시스템을 의미하며, 특히 정해진 시간 안에 작업을 완료해야 하는 경우를 다룬다. 실시간 시스템은 시간 제약 조건을 지키지 못할 경우 시스템에 치명적인 영향을 주는 경성 실시간 시스템, 마감 기한을 놓치면 서비스 품질이 저하되는 연성 실시간 시스템, 그리고 마감 기한을 드물게 놓치는 것이 허용되는 펌 실시간 시스템으로 분류된다. 이러한 시스템은 무기 제어, 엔진 제어, 비디오 게임 등 다양한 분야에서 활용되며, 스케줄링 알고리즘을 통해 실시간성을 확보한다. 실시간 컴퓨팅은 고성능 컴퓨팅과는 구분되며, 일관된 출력이 중요하게 여겨진다. 또한, 실시간과 유사하지만 지연이 있는 준실시간 시스템도 존재하며, 다양한 설계 방법론을 통해 실시간 시스템을 구축한다.
더 읽어볼만한 페이지
실시간 컴퓨팅 |
---|
2. 역사
"실시간"이라는 용어는 초기 시뮬레이션에서 유래되었으며, 실제 프로세스와 일치하는 속도로 실제 세계의 프로세스를 시뮬레이션하는 것을 의미했다. (현재는 실시간 시뮬레이션이라고 함) 아날로그 컴퓨터는 대부분 실제 시간보다 훨씬 빠른 속도로 시뮬레이션할 수 있었는데, 이는 느린 시뮬레이션만큼 위험할 수 있는 상황이었다.
시스템이 예상된 목적을 달성하기 위해 수행하는 수치 계산이나 제어를 태스크라고 부른다. 이러한 태스크에는 대부분 처리 완료 기한(데드라인)이 설정되어 있다. 이 태스크를 기한 내에 수행하여 목적을 달성하는 용도로 설계되거나 특화된 시스템이 실시간 시스템이다. 예를 들어, 자동차의 에어백은 차량 충돌 시 즉시 전개되지 않으면 탑승자의 생명이 위험해진다. 이 경우, 충돌 시 "탑승자가 대시보드에 충돌하기까지의 시간"이라는 기한 내에 "에어백을 작동시킨다"라는 태스크를 수행하도록 설계되어 있으므로, 에어백은 실시간 시스템이라고 할 수 있다.
1970년대 이후, 미니컴퓨터가 DOG (디지털 온 스크린 그래픽) 스캐너와 같은 전용 임베디드 시스템에 내장되면서, 들어오는 데이터와의 중요한 상호 작용에 대한 낮은 대기 시간의 우선 순위 기반 응답의 필요성이 증가했다. 이 시대부터 Data General의 RDOS (Real-Time Disk Operating System) 및 백그라운드 및 포그라운드 스케줄링을 갖춘 RTOS, 그리고 Digital Equipment Corporation의 RT-11과 같은 운영 체제가 시작되었다. 백그라운드-포그라운드 스케줄링은 포그라운드 작업이 실행될 필요가 없을 때 낮은 우선 순위 작업에 CPU 시간을 할당하고, 포그라운드 내에서 가장 높은 우선 순위를 가진 스레드/작업에 절대적인 우선 순위를 부여했다. 실시간 운영 체제는 시분할 멀티유저 작업에도 사용되었는데, Data General Business Basic은 RDOS의 포그라운드 또는 백그라운드에서 실행될 수 있으며, 덤 터미널을 통해 상호 작용하는 사람들에게 더 적합하도록 스케줄링 알고리즘에 추가 요소를 도입했다.
초기 개인용 컴퓨터는 때때로 실시간 컴퓨팅에 사용되었다. 다른 인터럽트를 비활성화할 수 있는 가능성은 정의된 타이밍을 가진 하드 코딩 루프를 허용했으며, 낮은 인터럽트 대기 시간은 실시간 운영 체제를 구현하여 사용자 인터페이스와 디스크 드라이브에 실시간 스레드보다 낮은 우선 순위를 부여했다. 이에 비해 Intel CPU (8086..80586)의 프로그래머블 인터럽트 컨트롤러는 매우 큰 대기 시간을 생성하며, Windows 운영 체제는 실시간 운영 체제가 아니며 네이티브 머신 언어를 사용하고 모든 인터럽팅 Windows 코드를 우회하지 않고는 자체 스케줄러를 사용하여 프로그램을 CPU를 완전히 제어하고 사용할 수 없다. 그러나 여러 코딩 라이브러리가 다양한 운영 체제에서 고급 언어로 실시간 기능을 제공하는데, Java Real Time이 그 예시이다. Motorola 68000 및 후속 제품군 (68010, 68020, ColdFire 등)과 같은 후기 마이크로프로세서는 산업 제어 시스템 제조업체에서도 인기를 얻었다.
3. 분류
실시간 시스템은 몇 가지 종류로 분류할 수 있다.3. 1. 경성 실시간 시스템 (Hard Real-time System)
경성 실시간 시스템(hard real-time system)은 작업 실행 시작이나 완료에 대한 시간 제약 조건을 지키지 못하면 시스템에 치명적인 영향을 주는 경우를 가리킨다.[1] 예로 무기 제어, 발전소 제어, 철도 자동 제어, 미사일 자동 조준 등이 있다.[1] 보장되는 컴퓨팅과 시간의 정확성, 컴퓨팅에 대한 예측성을 확보해야 한다.
시스템이 예상된 목적을 달성하기 위해 수행하는 수치 계산이나 제어를 태스크라고 부른다.[1] 이러한 태스크에는 대부분 처리 완료 기한(데드라인)이 설정되어 있다.[1] 이 태스크를 기한 내에 수행하여 목적을 달성하는 용도로 설계되거나 특화된 시스템이 실시간 시스템이다.[1] 예를 들어, 자동차의 에어백은 차량 충돌 시 즉시 전개되지 않으면 탑승자의 생명이 위험해진다.[1] 이 경우, 충돌 시 "탑승자가 대시보드에 충돌하기까지의 시간"이라는 기한 내에 "에어백을 작동시킨다"라는 태스크를 수행하도록 설계되어 있으므로, 에어백은 실시간 시스템이라고 할 수 있다.[1]
이러한 유형의 시스템에서는 데드라인 미스를 최대한 발생시키지 않도록 설계 단계부터 시간적 제약 준수가 강조된다.[1]
예: 에어백, 플라이 바이 와이어, 미사일 요격 시스템 등[1]
3. 2. 연성 실시간 시스템 (Soft Real-time System)
연성 실시간 시스템(soft real-time system)은 작업 실행에 대한 시간 제약이 있지만, 이를 지키지 못하더라도 전체 시스템에 큰 영향을 끼치지 않는 시스템을 말한다. 그 예로 동영상을 들 수 있다. 초당 일정한 프레임(Frame) 이상의 영상을 재생해야 한다는 제약이 있으나, 통신 부하나 시스템의 다른 작업으로 인하여 프레임(Frame)이 건너뛰어져도 동영상을 재생하고 있던 시스템에는 큰 영향을 끼치지 않는다. 여기서 프레임(Frame)은 DATA 통신, 컴퓨터 그래픽스(Computer Grapics:CG), TV(Tele Vision) 방송 등에서 전송되는 정보의 일정한 단위(초당 그림이 보이는 수라고도 볼 수 있음)이다.
3. 3. 펌 실시간 시스템 (Firm Real-time System)
펌 실시간 시스템은 마감 시간 오류가 발생했을 때 즉시 시스템에 손상을 주지는 않지만, 해당 처리 자체의 가치가 무효가 되거나, 복수의 마감 시간 오류가 치명적인 결과로 이어지는 시스템을 의미한다.
예시로는 생산 라인, 가이거 계수기, 주가 예측 시스템 등이 있다.
4. 실시간 시스템의 요건
시스템은 작업의 전체 정확성이 논리적 정확성뿐만 아니라 작업을 수행하는 시간에 따라 달라지는 경우 '실시간'이라고 한다.[5] 실시간 시스템과 마감 기한은 마감 기한을 놓치는 결과에 따라 분류된다.[6]
- '''하드(Hard)''': 마감 기한을 놓치면 시스템 전체가 실패한다.
- '''펌(Firm)''': 마감 기한을 드물게 놓치는 것은 허용되지만 시스템의 서비스 품질을 저하시킬 수 있다. 결과의 유용성은 마감 기한이 지나면 0이 된다.
- '''소프트(Soft)''': 결과의 유용성은 마감 기한이 지나면 저하되어 시스템의 서비스 품질을 저하시킨다.
따라서 '''하드 실시간 시스템'''의 목표는 모든 마감 기한을 준수하는 것이고, '''소프트 실시간 시스템'''의 목표는 특정 응용 프로그램 관련 기준을 최적화하기 위해 특정 하위 집합의 마감 기한을 준수하는 것이다. 최적화된 특정 기준은 응용 프로그램에 따라 다르지만, 일반적인 예로는 마감 기한 준수 횟수 최대화, 작업 지연 최소화, 우선 순위가 높은 작업의 마감 기한 준수 횟수 최대화 등이 있다.
컴퓨터 멀티태스킹 시스템의 맥락에서 스케줄링 정책은 일반적으로 우선 순위 기반(선점형 멀티태스킹 스케줄러)이다. 어떤 상황에서는 이러한 스케줄러가 하드 실시간 성능을 보장할 수 있다(예: 작업 집합과 해당 우선 순위가 미리 알려진 경우). 레이트 단조와 같은 다른 하드 실시간 스케줄러가 있지만 작업의 스케줄링을 위해 추가 정보가 필요하므로 범용 시스템에서는 일반적이지 않다. 즉, 작업이 얼마나 오래 실행되어야 하는지에 대한 경계 또는 최악의 경우의 추정치가 필요하다. 최대 마감 기한 우선과 같은 하드 실시간 작업을 스케줄링하기 위한 특정 알고리즘이 존재하며, 문맥 전환의 오버헤드를 무시하면 100% 미만의 시스템 부하에 충분하다.[7] 적응형 파티션 스케줄러와 같은 새로운 오버레이 스케줄링 시스템은 하드 실시간 및 비 실시간 응용 프로그램이 혼합된 대규모 시스템을 관리하는 데 도움이 된다.
실시간 컴퓨팅은 때때로 고성능 컴퓨팅으로 오해되지만, 이는 정확한 분류가 아니다.[11] 예를 들어, 과학 시뮬레이션을 실행하는 대규모 슈퍼컴퓨터는 인상적인 성능을 제공할 수 있지만, 실시간 계산을 수행하는 것은 아니다. 반대로, ABS (안티록 브레이킹 시스템)의 하드웨어와 소프트웨어가 필요한 데드라인을 충족하도록 설계되면, 더 이상의 성능 향상은 필수적이거나 유용하지 않다. 또한, 네트워크 서버가 네트워크 트래픽으로 과도하게 로드되면 응답 시간이 느려질 수 있지만, 대부분의 경우 타임아웃(데드라인 초과) 전에 성공할 것이다. 따라서, 이러한 네트워크 서버는 실시간 시스템으로 간주되지 않는다. 시간적 실패(지연, 타임아웃 등)는 일반적으로 작고 분할되어 있지만(영향이 제한적), 치명적 실패는 아니다. FTSE 100 지수와 같은 실시간 시스템에서는, 한계를 넘어서는 속도 저하는 해당 응용 분야에서 치명적인 것으로 간주되는 경우가 많다. 실시간 시스템의 가장 중요한 요구 사항은 높은 처리량이 아니라 일관된 출력이다.
시스템이 예상된 목적을 달성하기 위해 수행하는 수치 계산이나 제어는 태스크라고 불린다. 이러한 태스크에는 대부분 처리 완료 기한(데드라인)이 설정되어 있다. 이 태스크를 기한 내에 수행하여 목적을 달성하는 용도로 설계되거나 특화된 시스템이 실시간 시스템이다. 예를 들어, 자동차의 에어백은 차량 충돌 시 즉시 전개되지 않으면 탑승자의 생명이 위험해진다. 이 경우, 충돌 시 "탑승자가 대시보드에 충돌하기까지의 시간"이라는 기한 내에 "에어백을 작동시킨다"라는 태스크를 수행하도록 설계되어 있으므로, 에어백은 실시간 시스템이라고 할 수 있다.
5. 스케줄링
실시간성을 높이기 위해 어떤 순서로 태스크를 처리할지(스케줄링)가 중요해진다. 하드 실시간 시스템의 경우, 스케줄링 알고리즘 선정이 특히 중요하다. 이러한 알고리즘에는 각 태스크의 우선순위가 스케줄링의 기준이 되는 경우가 많으며, 순위가 시간과 함께 변화하는 동적 스케줄링(최대 마감 기한 우선이나 최소 여유 시간 우선 등)과 변화하지 않는 정적 스케줄링(레이트 단조 스케줄링 등)으로 크게 분류된다.
6. 디지털 신호 처리에서의 실시간
실시간 디지털 신호 처리(DSP) 프로세스에서 분석(입력) 및 생성(출력)되는 샘플은 처리 지연과 관계없이, 동일한 샘플 집합을 입력하고 출력하는 데 걸리는 시간 내에 지속적으로 처리(또는 생성)될 수 있다.[9] 이는 처리 지연이 무제한으로 작동하더라도 제한되어야 함을 의미한다. 평균 샘플당 처리 시간은 오버헤드를 포함하여 샘플링 속도의 역수인 샘플링 주기를 초과하지 않는다.
입력 데이터의 흐름을 따라가지 못해 출력이 입력보다 점점 더 뒤처지는 신호 처리 알고리즘은 실시간이 아니다. 출력 지연(입력 대비)이 무제한으로 작동하는 프로세스와 관련하여 제한되어 있다면, 처리량 지연이 매우 길더라도 해당 신호 처리 알고리즘은 실시간이다.
6. 1. 라이브 vs. 실시간
실시간 디지털 신호 처리(DSP)는 분석되거나 생성된 샘플이 처리 지연과 관계없이, 동일한 샘플 집합을 입력하고 출력하는 데 걸리는 시간 내에 지속적으로 처리될 수 있어야 한다.[9] 이는 처리 지연이 무제한으로 작동하더라도 제한되어야 함을 의미한다. 평균 샘플당 처리 시간은 샘플링 속도의 역수인 샘플링 주기를 초과하지 않아야 한다.[9]예를 들어, 오디오 신호 처리에서 2.00초의 소리를 분석, 합성 또는 처리하는 데 2.01초가 걸린다면 실시간이 아니다. 그러나 1.99초가 걸린다면 실시간 DSP 프로세스이거나 실시간 DSP 프로세스가 될 수 있다.
일상생활의 비유로, 식료품점에서 계산을 기다리는 줄이 무한정 길어진다면 계산 과정은 실시간이 아니다. 줄의 길이가 제한되고 고객이 입력되는 속도만큼 빠르게 처리되어 출력된다면 그 과정은 ''실시간''이다.
입력 데이터 흐름을 따라가지 못해 출력이 입력보다 점점 더 뒤처지는 신호 처리 알고리즘은 실시간이 아니다. 출력 지연이 제한되어 있다면, 처리량 지연이 매우 길더라도 해당 신호 처리 알고리즘은 실시간이다.
실시간 신호 처리는 필수적이지만, 라이브 이벤트 지원과 같이 라이브 신호 처리에 필요한 모든 것을 충족하는 것은 아니다. 라이브 오디오 디지털 신호 처리는 실시간 작동과 더불어, 공연자와 관객에게 허용 가능한 낮은 처리량 지연을 가져야 한다. 라이브 실시간 처리의 허용 가능한 대기 시간 제한은 6~20밀리초 사이로 추정된다.[10]
300ms 미만의 실시간 양방향 통신 지연("왕복" 또는 단방향 지연의 두 배)은 대화 중 원치 않는 "말 겹침"을 방지하기 위해 "허용 가능한" 것으로 간주된다.
7. 실시간과 고성능
실시간 컴퓨팅은 때때로 고성능 컴퓨팅으로 오해되지만, 이는 정확한 분류가 아니다.[11] 예를 들어, FTSE 100 지수와 같은 실시간 시스템에서는 한계를 넘어서는 속도 저하는 해당 응용 분야에서 치명적인 것으로 간주되는 경우가 많다. 실시간 시스템의 가장 중요한 요구 사항은 높은 처리량이 아니라 일관된 출력이다.
8. 준실시간 (Near Real-time)
"준실시간"(Near real-time, NRT) 또는 "거의 실시간"은 통신 및 컴퓨팅에서 자동화된 데이터 처리 또는 통신망 전송으로 인해 발생하는 네트워크 지연 시간을 의미한다. 이는 사건 발생 시점과 처리된 데이터의 사용 시점(예: 디스플레이 또는 피드백 및 제어 목적) 사이에 발생한다. 예를 들어, 준실시간 디스플레이는 현재 시점에서 처리 시간을 뺀, 즉 거의 라이브 이벤트 시점의 사건이나 상황을 묘사한다.[12]
"준실시간"과 "실시간"이라는 용어의 구분은 다소 모호하며, 상황에 따라 정의되어야 한다. 이 용어는 심각한 지연이 없음을 의미한다.[12] 많은 경우, "실시간"으로 묘사되는 처리는 "준실시간"으로 묘사하는 것이 더 정확하다.
준실시간은 또한 음성 및 비디오의 지연된 실시간 전송을 의미한다. 이는 전체 대용량 비디오 파일을 다운로드할 필요 없이 대략 실시간으로 비디오 이미지를 재생할 수 있게 해준다. 호환되지 않는 데이터베이스는 다른 데이터베이스가 예약된 방식으로 가져오기/내보내기를 할 수 있는 공통 플랫 파일로 내보내기/가져오기를 할 수 있으므로, 서로 "준실시간"으로 공통 데이터를 동기화/공유할 수 있다.
9. 설계 방법
실시간 시스템 설계를 지원하는 여러 방법이 있으며, 그 예시로 시스템의 동시성 구조를 나타내는 오래되었지만 매우 성공적인 방법인 MASCOT이 있다. 다른 예로는 HOOD 방법, Real-Time UML, AADL, 레이븐스카 프로파일, 그리고 Real-Time Java가 있다.
참조
[1]
웹사이트
FreeRTOS – Open Source RTOS Kernel for small embedded systems – What is FreeRTOS FAQ?
https://www.freertos[...]
2021-03-08
[2]
서적
Principles of Concurrent and Distributed Programming
Prentice Hall
1990
[3]
서적
Programming Real-time Computer Systems
https://archive.org/[...]
Prentice-Hall Incorporated
1965
[4]
서적
Computer-Based Industrial Control
https://books.google[...]
PHI Learning
2015-01-17
[5]
논문
Real-time computing: a new discipline of computer science and engineering
http://kabru.eecs.um[...]
1994-01
[6]
서적
Real-Time Systems: Design Principles for Distributed Embedded Applications
Kluwer Academic Publishers
1997
[7]
논문
Scheduling Algorithms for Multiprogramming in a Hard Real-time Environment
http://citeseer.ist.[...]
1973-01
[8]
논문
Real-time reconfiguration for guaranteeing QoS provisioning levels in Grid environments
2009-07
[9]
서적
Real-Time Digital Signal Processing: Implementations and Applications
http://media.wiley.c[...]
Wiley
2006
[10]
논문
Fingerprinting for Solving A/V Synchronization Issues within Broadcast Environments
2011-07
[11]
간행물
Misconceptions about real-time computing: a serious problem for next-generation systems
IEEE Computer Society
[12]
웹사이트
Federal Standard 1037C: Glossary of Telecommunications Terms
http://www.its.bldrd[...]
Its.bldrdoc.gov
2014-04-26
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com